perm filename MPXPAR.FAI[D,SYS] blob sn#228775 filedate 1976-08-01 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE MPXPAR TRY TO CAUSE MPX PARITY ERRORS
C00008 00003	GO, INITIALIZATION
C00010 00004	MAIN LOOP
C00014 ENDMK
C⊗;
TITLE MPXPAR TRY TO CAUSE MPX PARITY ERRORS

A←1
B←2
C←3
D←4
E←5

P←17

APR←←0
PI←←4
KLPAG←←10
CCA←←14
TIM←←20
DTE0←←200
DPY←430
PMP←←500
IBM←←504
DDD←510
MPX←530
VDS←340

;PETIT CHANNEL DEFINITIONS

;PMP CONI BITS
;LEFT HALF
CHLNXM←←200000		;CHANNEL NXM
SELERR←←40000		;SELECT ERROR
			;37700 ARE ADDRESS OF CURRENTLY SELECTED DEVICE
DSKPAR←←40		;CONTROL UNIT DETECTED PARITY ERROR (BIT 18 ALSO SET)
CORPAR←←20		;CHANNEL DETECTED PARITY ERROR (BIT 18 ALSO SET)
IDLEL←←10		;CHANNEL IS IDLE
IS←←4			;CHANNEL IS IN INITIAL SELECT STATE
REQ←←2			;CHANNEL IS IN REQUEST STATE
TRANS←←1		;CHANNEL IS IN TRANSFER STATE

;RIGHT HALF
PARERR←←400000		;CHANNEL OR CONTROL UNIT DETECTED PARITY ERROR
CMDEMP←←200000		;COMMAND HOLD EMPTY (OR UNUSUAL END)
IDLE←←100000		;IDLE STATE (SAME AS IDLEL)
UNEND←←40000		;UNUSUAL END (NXM,SELERR,BUSY,UNIT CHECK,DATA CHAIN ERR)
NEWST←←20000		;CHANNEL HAS NEW STATUS
ATTN←←10000		;ATTENTION
STMOD←←4000		;STATUS MODIFIER
CUEND←←2000		;CONTROL UNIT END
BUSY←←1000		;DEVICE BUSY (IF STMOD THEN CU BUSY)
CHNEND←←400		;CHANNEL END
DEVEND←←200		;DEVICE END
UCHK←←100		;UNIT CHECK
UNXCPT←←40		;UNIT EXCEPTION
ACTIVE←←20		;CHANNEL IS REQUESTING AN INTERRUPT

;PMP CONO BITS (ENABLE INTERRUPT CONDITIONS)
EPAR←←400000		;DISK OR CORE PARITY ERROR
ECMDEM←←200000		;COMMAND HOLD EMPTY
EIDLE←←100000		;IDLE
EUNEND←←40000		;UNUSUAL END
ENEWST←←20000		;NEW STATUS
EATTN←←10000		;ATTENTION
ESTMOD←←4000		;STATUS MODIFIER
ECUEND←←2000		;CONTROL UNIT END
EBUSY←←1000		;BUSY
ECHEND←←400		;CHANNEL END
EDEVEN←←200		;DEVICE END
EUCHK←←100		;UNIT CHECK
EUNXCP←←40		;UNIT EXCEPTION

;DATAO PMP,WCMA
;DATAI IBM,MA

;IBM CONO BITS (FOR CLEARING AND RESETTING THE CHANNEL)
CUNEND←←4000		;CLEAR UNUSUAL END
CACTIV←←400		;CLEAR ACTIVE
CNEWST←←200		;CLEAR NEW STATUS
CSTATU←←40		;CLEAR STATUS REGISTER
CCMDHO←←20		;CLEAR COMMAND HOLD LOADED
SCMDHO←←10		;SET COMMAND HOLD LOADED
RSTOPL←←2		;RESET OPL OUT
RSTCHN←←1		;RESET CHANNEL

;IBM DATAO BITS (SETS COMMAND HOLD LOADED AND LOADS COMMAND HOLD)
;17,,740000 ARE THE DEVICE ADDRESS
NWCMA←←20000		;THIS COMMAND NEEDS A WCMA (DOES A MEMORY XFER)
BYTE4←←10000		;4 BYTE MODE
CBYTES←←4000		;COUNT BYTES
CHAIN←←2000		;COMMAND CHAINING
SKMON←←1000		;SKIP IF STATUS MOD ON
SKMOFF←←400		;SKIP IF STATUS MOD OFF
;377 ARE THE COMMAND


;KL10 PARAMETERS, ETC.
SWEEPB←←200000		;KL10 APR CONI BIT - SWEEP BUSY
DTFLG←←444		;DTE20 OPERATION COMPLETE FLAG
DTF11←←450		;      FROM 11 ARGUMENT
DTCMD←←451		;      TO 11 COMMAND
DONG11←←20000		;DTE CONO BIT.  REQUEST 11 INTERRUPT

;MAPPIPLEXOR DEFINITIONS

;CONO MPX,E
MCLRAV←←400000		;CLR ACCESS VIOLATION FOR DEVICE
MCLKWV←←200000		;CLR WRITE VIOLATION FOR DEVICE
MCLRNX←←100000		;CLR NXM
MCLRPE←←40000		;CLR PAR ERR
MRESET←←20000		;RESET
MDVRST←←10000		;RESET DEVICE
;7000 IS DEVICE CODE
MPXDEV←←1000		;LOW BIT OF 3 BIT DEVICE CODE
MCPTPE←←400		;CLR PAGE TABLE PARITY ERROR
MCWPE←←200		;CLR WRITE PARITY ERROR
MCRPE←←100		;CLR READ PARITY ERROR
MDISMP←←40		;DISABLE MAPPING FOR DEVICE
MENBMP←←20		;ENABLE MAPPING FOR DEVICE
MENBPI←←10		;ENABLE LOAD PIA
;7 IS PIA

;CONI MPX,E
MBUSY←←100		;BUSY
MINT←←40		;INTERRUPTING
MNXM←←20		;NXM
MPARER←←10		;PARITY ERROR
;7 IS PIA

DEFINE CMDW (O1,D1,O2,D2,O3,D3) <
	BYTE (8)D1,D2,D3 (3)O1,O2,O3,4
>
DEFINE LVW (X,Y,BRT,SIZE,M,T) <
	BYTE (11)<X>,<Y> (3)BRT,SIZE (2)M,T (4) 6
>
DEFINE SEL (N) <
	BYTE (12)4000⊗<-N>,¬<4000⊗<-N>>,10
>
;GO, INITIALIZATION

LOC 74
	JRST DDT↑

LOC 200
	JRST GO
	JRST DDT

LOC 777
LOSCNT:	0
GO:	MOVE P,[-20,,PDL-1]
	CONO APR,200000		;I/O RESET
	CONO PI,10400		;FLUSH PIS
	CONSZ APR,SWEEPB	;WAIT FOR SWEEP BUSY TO FALL
	JRST .-1
	CONSO KLPAG,600000	;IS THE CACHE ON ALREADY?
	JRST SWP0		;NO.
	BLKO CCA,		;VALIDATE CORE
	CONSZ APR,SWEEPB
	JRST .-1
SWP0:	CONO KLPAG,0		;TURN OFF CACHE.  EPT TO PAGE ZERO.  TURN OFF MAP
	DATAI CCA,0		;SWEEP CACHE.  INVALIDATE ALL.
	CONSZ APR,SWEEPB	;WAIT FOR SWEEP BUSY TO FALL
	JRST .-1
	MOVEI A,MPXMIC
	LSH A,-9			;PHYSICAL PAGE NUMBER OF MICROCODE
	HRLI A,400000
	CONSZ MPX,MBUSY			;MAKE SURE MPX IS NOT BUSY
	JRST .-1
	CONO MPX,MRESET!MENBPI		;ZAP HIM GOOD
	CONSZ MPX,MBUSY
	JRST .-1			;WAIT TILL DONE CLEARING RAMS
	DATAO MPX,A			;START MICROCODE LOAD
	CONSZ MPX,MBUSY			;WAIT FOR MICROCODE LOAD TO FINISH
	JRST .-1
;MAIN LOOP

	CONO VDS,7
	DATAO VDS,[SETZ]
	CONO VDS,6
	DATAO VDS,[SETZ]	;SELECT CHANNEL 0 FOR 26 AND 27
	SETZM LOSCNT
RESTRT:	PUSHJ P,DSKZAP
	PUSHJ P,DSKGO		;START THE DISK
	PUSHJ P,DPYGO		;START THE III
	PUSHJ P,DDGO		;START THE DATA DISK
LOOP:	CONSZ DPY,402000	;NOT RUNNING OR NXM
	JRST DPYSRV
	CONSZ MPX,MINT		;MPX INTERRUPTING?
	JRST MPXSRV
	CONSZ DDD,10		;DATA DISK HALTED?
	JRST DDSRV		;YES
	CONSZ PMP,NEWST!UNEND	;DISK WANT SERVICE
	JRST DSKSRV
	JRST LOOP

DPYSRV:	PUSHJ P,DPYGO
	JRST LOOP

MPXSRV:	CONSZ MPX,MNXM!MPARER			;PARITY OR NXM IN MPX ITSELF?
	JRST MPXSR1				;YES.  THIS NEEDS A FULL RESET
	DATAI MPX,A
	TDNN A,[7B<=14+2*3>]			;ERROR IN III?
	JRST MPXSR2
	CONO MPX,<MPXDEV*2>!MDVRST		;RESET III
	AOS LOSCNT
	JRST MPXSR2

MPXSR1:	CONO MPX,MRESET
MPXSR2:	CONSZ MPX,MBUSY
	JRST .-1
	JRST LOOP

DDSRV:	PUSHJ P,DDGO
	JRST LOOP

DSKSRV:	CONI PMP,A
	TRNN A,NEWST
	JRST RESTRT
	CONO IBM,CNEWST
	TRNE A,DEVEND
	PUSHJ P,DSKGO		;IF FINISHED, START IT OVER AGAIN
	JRST LOOP

DSKZAP:	MOVEI B,3
DSKZA1:	CONO IBM,CUNEND!CNEWST!CSTATU!RSTOPL!RSTCHN
	MOVEI A,1000
	SOJG A,.
	SOJG B,DSKZA1
	POPJ P,

DSKGO:	DATAO PMP,SNWCMA
	DATAO IBM,SNSCMD
	POPJ P,

DPYGO:	CONO DPY,20		;STOP
;	HLRZ A,DPYCMD
;	HRLI A,20
;	MOVSM A,(A)
	DATAO DPY,DPYCMD
	CONO DPY,40		;CONTINUE
	POPJ P,

DDGO:	CONO DDD,10		;RESET
	CONO DDD,100		;SET DDGO
	DATAO DDD,[DDPROG]	;START THE DATA DISK UP
	POPJ P,

DDPROG:	CMDW(1,46,2,0,3,2)
	CMDW(3,2,4,10,5,0)
	ASCID /HERE IS SOME TEXT FOR THE PURPOSE OF FILLING UP
SOME PART OF A DATADISK SCREEN.  ANY UNAUTHORIZED USE OF THIS BROADCAST
WITHOUT THE EXPRESS WRITTEN CONSENT OF THE KL10 IS STRICTLY PROHIBITED.
/
	0
REPEAT 100,<0>


PDL:	BLOCK 20

SNWCMA:	SNSDAT
SNSDAT:	BLOCK 20
SNSCMD:	6,,NWCMA!BYTE4!4

DPYCMD:	DPYPRG,,20
DPYPRG:	SEL (3)
	LVW (-500,500,4,3,1,2)
	ASCID /HERE IS SOME TEXT FOR THE PURPOSE OF FILLING UP
SOME PART OF A DISPLAY SCREEN.  ANY UNAUTHORIZED USE OF THIS BROADCAST
WITHOUT THE EXPRESS WRITTEN CONSENT OF THE KL10 IS STRICTLY PROHIBITED.
/
	0

LOC <.+777>∧777000			;NEXT PAGE BOUNDARY
MPXMIC:
.INSERT MPX.INS[MPX,JBR]		;GET MICROCODE

	END GO